
from qturboframe.lib.webdriver.exceptions import SeleniumError
from BladeFerm.hui_app.hui_lib.base_table import BaseTable as HuiBaseTable

class BaseTable(HuiBaseTable):
    '''
    对操作员中心BaseTable进行部分方法重写
    '''

    def get_title_list(self):
        """
        获取操作员中心表格的列名，hidden列和gutter(空列)除外，以列表的形式返回
        重写说明：操作员中心多数表格含有class为'gutter'的th标签，该标签是为了表格美观的填充项，使用公共封装该标签对获取数据有所影响，所以重写方法把该th过滤掉

        :Returns:
            返回表格列名集合

        :Raises:
            SeleniumError: 参数为非table元素
        """
        table_hidden_class = r'h-table-hidden'
        grid_hidden_class = r'h-editgird-hidden'
        gutter_class = r'gutter'
        if self._element.tag_name == 'table':
            title_list = list()
            th_list = self._element.find_elements_by_attribute('xpath', './thead/tr/th', timeout=self.timeout)
            for th in th_list:
                th_class = th.get_attribute('class').split(' ')
                if table_hidden_class not in th_class and grid_hidden_class not in th_class and gutter_class not in th_class:
                    th.focus()
                    text = th.text
                    title_list.append(text)
            return title_list
        else:
            raise SeleniumError('元素对象不为table对象，对象类型为： ' +self._element.tag_name)